rust bevy を使ってみたメモ 2Dオブジェクトの生成

rust bevy を使ってみたメモ 2Dオブジェクトの生成

bevyの公式ドキュメント(英語)を見つけたため、少しずつ使い方がわかってきた気がします。
てか、他の方々も公式ドキュメントみながらコードを書いているんだろうなぁ
bevyのバージョン:0.12.1

参考:List of all items in this crate (docs.rs)

use bevy::prelude::*;

fn main() {
    App::new()
        .add_plugins(DefaultPlugins.set(WindowPlugin {
            primary_window: Some(Window {
                title: "Test".into(),
                resolution: (600.0, 600.0).into(),
                resizable: false,
                ..default()
            }),
            ..default()
        }))
        //コマンドをタプルで実行(Startupは最初に一回だけ実行されるらしい)
        .add_systems(Startup, (create_camera, create_object))
        .run()
}

//カメラの読み込み
fn create_camera (mut commands: Commands) {
    //これを生成しないとオブジェクトを観測できない
    commands.spawn(Camera2dBundle::default());
}

//オブジェクトの生成
fn create_object (mut commands: Commands) {
    //スプライトバンドルを生成
    commands.spawn(SpriteBundle {
        sprite: Sprite {
            //rgbaを0-255の範囲で指定(他にもあったけどこれが一番わかりやすそう)
            color: Color::rgba_u8(255, 255, 255, 255),

            //オブジェクトのサイズを設定(Someとinto()で無理やり)
            custom_size: Some((100.0, 100.0).into()),

            //ほかにも設定があったけどよくわからなかった
            ..default()
        },
        //親オブジェクトに対しての相対位置を設定できるっぽい(2Dだと中心が原点、x軸が横、y軸が縦)
        transform: Transform::from_xyz(240.0, 240.0, 0.0),

        //グローバル位置(絶対位置)もあるっぽいけどとりあえず相対位置で設定した

        //他の設定はとりあえずデフォルトで
        ..default()
    });
}

実行結果は下の通り

ウィンドウの大きさは600×600でオブジェクトの大きさが100×100、位置が(240, 240)に設定したらこんな感じになる。

なるほどなぁ
なんとなーく、公式ドキュメントの読み方がわかってきたようなきがする。

次は生成したオブジェクトを動かしてみるか…

(追記:2024/02/19)

transformでも大きさを設定できるっぽいです
どっちがいいかはわかりませんが…

        //親オブジェクトに対しての相対位置を設定できるっぽい(2Dだと中心が原点、x軸が横、y軸が縦)
        transform: Transform {
            translation: (240.0, 240.0, 0.0).into(),
            scale: (100.0, 100.0, 0.0).into(),
            ..default()
        },

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です